	$(document).ready(function(){
		InitRules();
	});	
	
	function isNumeric(sText,decimals,negatives) {
	var isNumber=true;
	var numDecimals = 0;
	var validChars = "0123456789";
	if (decimals)  validChars += ".";
	if (negatives) validChars += "-";
	var thisChar;
	for (i = 0; i < sText.length && isNumber == true; i++) {  
		thisChar = sText.charAt(i); 
		if (negatives && thisChar == "-" && i > 0) isNumber = false;
		if (decimals && thisChar == "."){
			numDecimals = numDecimals + 1;
			if (i==0 || i == sText.length-1) isNumber = false;
			if (numDecimals > 1) isNumber = false;
		}
		if (validChars.indexOf(thisChar) == -1) isNumber = false;
	}
	return isNumber;
}

	function MartrixExc()
	{
		  var s1=$("#mat_size_1").val();
		  var s2=$("#mat_size_2").val();
		  var vlabels='';
		  var vlabels2='';
		  
			for(var i=0;i<s2;i++)
			{
				vlabels+='%'+$("#ver_lab_"+i).val();
			}
			
			for(var i=0;i<s1;i++)
			{
				vlabels2+='%'+$("#hor_lab_"+i).val();
			}
			
			var cells='';
		 
			 for(var i=0;i<s1;i++)
			 {
				for(var j=0;j<s2;j++)
				{
					cells+='%'+$('#cell_'+i+'_'+j+'_1').val();
					cells+='%'+$('#cell_'+i+'_'+j+'_2').val();
				}
			 }
			
			 $.ajax({ type: 'POST',async:false,  url: $('#mat_form_stage_3').attr('action'),data:{cellv:cells,freepts:$('#free_pts').val(),endv:$('#end_value').val(),ends:$('#end_type').val(),hor:vlabels2,vert:vlabels,name:$('#rule_name').val(),type:0,label1:$('#rule_label_1').val() ,label2:$('#rule_label_2').val(),wintype:$('#win_type').val()},success: function(data)
			 {
				//alert(data);
			 }});
	}

	var nodes = new Array();
		
	function getHighestId(){
		var max=Math.max.apply(Math,nodes);
		if(!isFinite(max)){max=0;}
		return max;
	}	

	function getHighestActionId(idx){
		var actionHighestId=-1;
		$('#node'+idx+'actions tr').each(function(index){
			if(actionHighestId < parseInt($(this).children('.action').text())){
				actionHighestId = parseInt($(this).children('.action').text());
			}
		});	
		return actionHighestId;
	}
	
	function TreeExc(){
		var n=new Array();
		for(var i=1;i<=getHighestId();i++){
			
			if($('#node'+i+'td1').text()!=""){
				
				switch($('#node'+i+'type').val()){
					case "0":
					case "1":
						var player='';
						player+=$('#node'+i+'type').val();
						player+='%'+$('#node'+i+'td1').text();
						player+='%'+$('#node'+i+'group').val();
						for(var j=1;j<=getHighestActionId(i);j++){
							if($('#node'+i+'action'+j).text()!=""){
								player+='%'+$('#node'+i+'label'+j).val();
								player+='%'+$('#node'+i+'value'+j).val();
							}			
						}
						n.push(player);
					break;				
					case "2":
						var nature='';
						nature+=$('#node'+i+'type').val();
						nature+='%'+$('#node'+i+'td1').text();
						for(var j=1;j<=getHighestActionId(i);j++){
							if($('#node'+i+'action'+j).text()!=""){
								nature+='%'+$('#node'+i+'label'+j).val();
								nature+='%'+$('#node'+i+'probability'+j).val();
								nature+='%'+$('#node'+i+'value'+j).val();
							}
						}						
						n.push(nature);						
					break;				
					case "3":
						var point='';
						point+=$('#node'+i+'type').val();
						point+='%'+$('#node'+i+'td1').text();
						point+='%'+$('#node'+i+'points1').val();
						point+='%'+$('#node'+i+'points2').val();						
						n.push(point);
					break;				
				}
			}
		}
		
		
		$.ajax({type: 'POST',async:false,url: $('#form_stage_3').attr('action'),data:{nodes:n,freepts:$('#free_pts').val(),endv:$('#end_value').val(),ends:$('#end_type').val(),name:$('#rule_name').val(),type:1,label1:$('#rule_label_1').val(),label2:$('#rule_label_2').val(),wintype:$('#win_type').val()},success: function(data){
				alert(data);
		    }
		});
		
		
	}
	
	function InitRules()
	{
		$('.rules_option').click(function(event)
		{		
			
			if($(this).hasClass('rule_delete'))
			{
				return confirm('Czy na pewno usunąć '+$(this).parent().parent().parent().children('td').first().text()+'?');
			}
			
			$.ajax({ type: 'POST',async:false,  url: $(this).attr('href'),success: function(data)
			{
				$('#rules_body_context').html(data);
			}})
			
			event.preventDefault();
		});
		
		$('#rule_name').live('blur',function() {
			$('#name_error').hide();
			$.ajax({ type: 'POST',async:false,  url: $('#url_name').val(),data:{name:$('#rule_name').val()},success: function(data)
			{
				if(data!='oki' || !$('#rule_name').val())
				{
					$('#name_error').show();
					$('#rule_name').css('border-color','red');
				}else{
					$('#rule_name').css('border-color','black');
				}
			}});
		});
		
		$('.form_input').live('blur',function() {
		
			if(!$(this).val())
			{
				$('#name_error').show();
				$(this).css('border-color','red');
			}else{
				$(this).css('border-color','black');
			}
		
		});
		
		$('.form_input_int').live('blur',function() {
		
			var wyrazenie = new RegExp("^[1-9][0-9]*$", "g");
			
			if(!$(this).val() || !wyrazenie.exec($(this).val()))
			{
				$('#name_error2').show();
				$(this).css('border-color','red');
			}else{
				$(this).css('border-color','black');
			}
		
		});
		
		$('.form_input_double').live('blur',function() {
					
			
			if(!$(this).val())
			{
				$('#name_error2').show();
				$(this).css('border-color','red');
			}else{
				$(this).css('border-color','black');
			}
		
		});
		
		$('#form_stage_1').live('submit',function() {
			var error=false;
			
			if(!$('#rule_name').val()){error=true;$(this).css('border-color','red');}
			if(!$('#rule_label_1').val()){error=true;$(this).css('border-color','red');} 
			if(!$('#rule_label_2').val() ){error=true;$(this).css('border-color','red');}
			if($('#name_error').is(':visible')){error=true;}
			
			
		  if(!error)
		  {		  		
				$('#stage_1').hide();
				  if($('#mat').is(':checked'))
				  {
					$('.mat_stage_2').show();
				  }else{
					$('.tree_stage_2').show();
				  }
						 
		   }else{
			  //$('#name_error').is(':visible')
		   }
		   
		  return false;
		});
		
		$('#mat_form_stage_2').live('submit',function() {
		
			var s1=$("#mat_size_1").val();
			var s2=$("#mat_size_2").val();
			

			$('#mat_valeuse').append('<table id="matrix_table" class="rules_matrix_table" style="margin:50px auto"><tr id="mtr1"><td></td></tr>');
			for(var i=0;i<s2;i++)
			{
				$('#mtr1').append('<td colspan="2" class="matrix_actions2"><input id="ver_lab_'+i+'" type="text" style="width:100px" value="akcja gracza B" title="Wprowadź nazwę akcji" /></td>');
			}
			
			for(var i=0;i<s1;i++)
			{
				$('#matrix_table').append('<tr id="mtr'+(i+2)+'" class="matrix_row"><td class="matrix_actions1"><input id="hor_lab_'+i+'" type="text" style="width:100px" value="akcja gracza A" title="Wprowadź nazwę akcji" /></td></tr>');
				for(var j=0;j<s2;j++)
				{
					$('#mtr'+(i+2)).append('<td class="matrix_cell1"><input class="form_input_double" id="cell_'+i+'_'+j+'_1" type="text" size="2" value="0" title="Wprowadź punkty dla gracza 1" /></td><td class="matrix_cell2"><input class="form_input_double" id="cell_'+i+'_'+j+'_2" type="text" size="2" value="0" title="Wprowadź punkty dla gracza 2" /></td>');
				}
			}
		
		  $('.mat_stage_2').hide();
		  $('.mat_stage_3').show();
		  return false;
		});
		
		$('#mat_form_stage_3').live('submit',function() {		
		  $('.mat_stage_3').hide();
		  $('.stage_4').show();		  
		  return false;
		});
		
			  
		var	treeOK=false;
		
		$('#form_stage_2').live('submit',function() {			  
			
			
			var label1=$("#rule_label_1").val();
			var label2=$("#rule_label_2").val();
			var init_number=$("#node_init_number").val();
			
			$('#gsp_new_node').before('<table id="tree_table" class="content_table" style="border:1px solid black"><colgroup style="width:48px" /><colgroup style="width:112px" /><colgroup style="width:110px" /><colgroup style="width:80px" /><colgroup style="width:80px" /><colgroup style="width:*" /><colgroup style="width:64px" /><tr id="header"><td>#</td><td>Typ</td><td colspan="4" >Parametry węzła</td><td></td></tr></table>');

			$('#node_add').bind('click',function(){addNode(getEmptyId());return false;});
			
			$('#validate_tree').bind('click',function(){validateData();});
			
			function addNode(){
				if($('#tree_table tr').size()-1==50){alert('Nie można dodać więcej niż 50 węzłów');return;}

				var idx=getEmptyId();
				
				var nodeCode='<tr id="node'+idx+'"><td id="node'+idx+'td1">'+idx+'</td><td id="node'+idx+'td2"><select id="node'+idx+'type" style="width:100px" title="Wybierz typ węzła"><option value="-1">Wybierz typ</option><option value="0">'+label1+'</option><option value="1">'+label2+'</option><option value="2">Natura</option><option value="3">Wypłata</option></select></td><td id="node'+idx+'td3"><td id="node'+idx+'td4"><td id="node'+idx+'td5"></td><td id="node'+idx+'td6"></td></td><td id="node'+idx+'td7"><a id="node'+idx+'delete" class="content_option" href="#" title="Usuń wybrany węzeł"><img class="option_img" src="/images/iDel.png">usuń</a></td></tr>';
				
				var max=getHighestId();
				for(var i=0;i<=max+1;i++){
					if(i==max+1){
							$('#tree_table').append(nodeCode);
					}
					if(nodes[i] > idx){ 
						$('#node'+nodes[i]).before(nodeCode);
						break;
					}
				}
				
				function sortfunc(a, b)
				{
				return a - b;
				}

				nodes.push(idx);				
				nodes.sort(sortfunc);			

				$('#node_add').unbind('click');
				$('#node_add').bind('click',function(){addNode(getEmptyId());return false;});
				$('#node'+idx+'delete').unbind('click');
				$('#node'+idx+'delete').bind('click',function(){removeNode(idx);return false;});
				$('#node'+idx+'type').unbind('change');				
				$('#node'+idx+'type').bind('change',function(){changeNodeType(idx);return false;});
			}
			
			for(var i=1;i<=init_number;i++){
				addNode();
			}
			
			function getEmptyId(){
				var max=getHighestId();
				for(var i=1;i<=max;i++){
					if(nodes.indexOf(i)==-1){
						return i;
					}
				}
				return max+1;
			}
						
			function removeNode(idx){
				removeGroup(idx);
				$('#node'+idx).remove();
				nodes.splice(nodes.indexOf(idx),1);
				removeActionTarget(idx)
			}
			
			function getGroups(idx){
				var groups = "";
				for(var i=1;i<=getHighestId();i++){
					if($('#node'+i+'td1').text()==idx){ 
						groups += "<option value="+$('#node'+i+'td1').text()+" selected=\"selected\">"+$('#node'+i+'td1').text()+"</option>";
					}
					else if($('#node'+i+'group').text()){
						groups += "<option value="+$('#node'+i+'td1').text()+">"+$('#node'+i+'td1').text()+"</option>";
					}
				}
				return groups;
			}
			
			function removeGroup(idx){
				for(var i=1;i<=getHighestId();i++){
					$('#node'+i+'group option[value="'+idx+'"]').remove();	
				}
			}
			
			function addGroup(idx){
				for(var i=1;i<=getHighestId();i++){
					if(i!=idx){
						if($('#node'+i+'group').size()){
							for(var j=1;j<=getHighestId();j++){
								if($('#node'+i+'group option[value='+j+']').val()==idx){return;}
								if($('#node'+i+'group option[value='+j+']').val()>idx){ 
									$('#node'+i+'group option[value='+j+']').before('<option value="'+idx+'">'+idx+'</option');	
									return;
								}
							}
							$('#node'+i+'group').append('<option value="'+idx+'">'+idx+'</option');	
						}
					}
				}
			}
			
			function changeNodeType(idx){
				switch($('#node'+idx+'type').val()){
					case "-1":
						$('#node'+idx+'td3').html('');
						$('#node'+idx+'td4').html('');
						$('#node'+idx+'td5').html('');
						$('#node'+idx+'td6').html('');
						
						removeGroup(idx);
						removeActionTarget(idx);
					break;
					case "0":
					case "1":
						$('#node'+idx+'td3').html('Zbiór informacyjny:');
						$('#node'+idx+'td4').html('<select id="node'+idx+'group" style="width:50px" title="Wybierz grupę dla węzła">'+getGroups(idx)+'</select>');
						$('#node'+idx+'td5').html('Akcje:');
						$('#node'+idx+'td6').html('<table id="node'+idx+'actions" class="actions_table"></table><a id="node'+idx+'action_add" class="content_option" href="#" title="Dodaj nową akcję"><img class="option_img" src="/images/iAdd.png">dodaj akcję</a>');

						$('#node'+idx+'action_add').bind('click',function(){addAction(idx,"player",'akcja');return false;});
						addAction(idx,"player",'L');
						addAction(idx,"player",'R');					
						addGroup(idx);
						addActionTarget(idx);						
					break;
					case "2":
						$('#node'+idx+'td3').html('');
						$('#node'+idx+'td4').html('');
						/*$('#node'+idx+'td4').html('<select id="node'+idx+'group" style="width:50px" title="Wybierz grupę dla węzła">'+getGroups(idx)+'</select>');*/						
						$('#node'+idx+'td5').html('Akcje:');
						$('#node'+idx+'td6').html('<table id="node'+idx+'actions" class="actions_table"></table><a id="node'+idx+'action_add" class="content_option" href="#" title="Dodaj nową akcję"><img class="option_img" src="/images/iAdd.png">dodaj akcję</a>');
						
						$('#node'+idx+'action_add').bind('click',function(){addAction(idx,"nature",'akcja');return false;});
						addAction(idx,"nature",'L');
						addAction(idx,"nature",'R');
						//addGroup(idx);
						addActionTarget(idx);
					break;
					case "3":
						$('#node'+idx+'td3').html('');
						$('#node'+idx+'td4').html('');
						$('#node'+idx+'td5').html('Wypłata:');
						$('#node'+idx+'td6').html('1: <input id="node'+idx+'points1" type="text" size="5" title="Wprowadź punkty dla gracza 1" value="0" /> 2:<input id="node'+idx+'points2" type="text" size="5" title="Wprowadź punkty dla gracza 2" value="0" />');
						
						removeGroup(idx);
						addActionTarget(idx);						
					break;
				}
			}
			
			function getActionTargets(idx){
				var targets = "";
				for(var i=0;i<nodes.length;i++){
					if(nodes[i] != idx && $('#node'+nodes[i]+'type').val()!=-1){
						targets += "<option value="+nodes[i]+">"+nodes[i]+"</option>";
					}else{
						continue;	
					}
				}
				return targets;
			}
			

			
			function addAction(idx,type,nm){
				
				var targets=getActionTargets(idx);
				//if(targets!=""){
					if($('#node'+idx+'actions tr').size()==6){alert('Błąd!\nWęzeł może posiadać max 6 akcji.');return;}

					var actionMax=getHighestActionId(idx);

					var aIdx=0;
					if(actionMax==-1){
						aIdx=1;
					}else{
						aIdx=++actionMax;
					}
				
				$('#node'+idx+'actions').append('<tr id="node'+idx+'action'+aIdx+'"><td class="action" style="display:none">'+aIdx+'</td><td><input id="node'+idx+'label'+aIdx+'" type="text" style="width:100px" value="'+nm+'" title="Wprowadź nazwę akcji"/></td>'+(type=='nature'?'<td><input id="node'+idx+'probability'+aIdx+'" type="text" style="width:30px" value="0" maxlength="4" title="Wprowadź prawdopodobieństwo akcji"/></td>':'')+'<td><select id="node'+idx+'value'+aIdx+'" style="width:50px" title="Wybierz węzeł docelowy">'+targets+'</select></td><td><a id="node'+idx+'action'+aIdx+'delete" class="content_option" href="#" title="Usuń wybraną akcję"><img class="option_img" src="/images/iDel.png">usuń</a></td></tr>');
				
				$('#node'+idx+'action'+aIdx+'delete').unbind('click');
				$('#node'+idx+'action'+aIdx+'delete').bind('click',function(){removeAction(idx,aIdx);return false;});
				
				//}else{
					//alert('Błąd!\nNie można dodać akcji.\nBrak węzłów docelowych.');
				//}
			}

			function removeAction(idx,aIdx){
				$('#node'+idx+'action'+aIdx).remove();
			}				
			
			function addActionTarget(idx){
				for(var i=1;i<=getHighestId();i++){
					if(i!=idx){
						if($('#node'+i+'actions tr').size() > 0){
							
							var actionMax=getHighestActionId(i);
							if(actionMax==-1){
								actionMax=1;
							}
							for(var j=1;j<=actionMax;j++){
								var done=false;
								$('#node'+i+'value'+j+' option').each(function(index){
									if($(this).val()==idx){done=true; return false;}
									if($(this).val()>idx){ 
										$(this).before('<option value="'+idx+'">'+idx+'</option');	
										done=true; 
										return false;
									}
								});
								if(!done){$('#node'+i+'value'+j).append('<option value="'+idx+'">'+idx+'</option');}	
							}
						}
					}
				}
			}
			
			function removeActionTarget(idx){
				for(var i=1;i<=getHighestId();i++){
					if($('#node'+i+'actions tr').size() > 0){
						var actionMax=getHighestActionId(i);
						if(actionMax==-1){
							actionMax=1;
						}
						for(var j=1;j<=actionMax;j++){
							$('#node'+i+'value'+j+' option[value="'+idx+'"]').remove();
							//if($('#node'+i+'value'+j+' option').size()==0){
							//	removeAction(i,j);
							//}		
						}
					}
				}
			}
			
			function validateData(){
				if(getHighestId()==0){
					alert('Błąd!\nBrak węzłów.\nDodaj wymagane informacje.');
					return false;
				}		
				
				for(var i=nodes[0];i<=getHighestId();i++){
					//sprawdzanie pustych wezlow
					if($('#node'+i+'type').val() == -1){
						alert('Węzeł '+i+': błąd!\nWybierz typ lub usuń węzeł.');
						return false;
					}
					
					//sprawdzanie typu wierzcholka
					if($('#node'+nodes[0]+'type').val()==-1 ||  $('#node'+nodes[0]+'type').val()==3){
						alert('Węzeł '+nodes[0]+': błąd!\nWierzchołek drzewa ma niepoprawny typ.\nZmień typ pierwszego węzła na liście na Gracz1,\nGracz2 lub Natura. Ewentualnie usuń węzeł.');
						return false;			
					}		
					
					//sprawdzanie wezlow bez akcji
					if($('#node'+i+'actions').size()){
						if($('#node'+i+'actions tr').size()==0 && $('#node'+i+'type').val()!=-1 && $('#node'+i+'type').val()!=3){
							alert('Węzeł '+i+': błąd!\nIstnieją puste akcje.\nZdefiniuj akcje.');
							return false;
						}
					}
				}
				

				for(var i=nodes[0];i<=getHighestId();i++){
					var error=false;
					
					//sprawdzanie czy akcje sie nie powtarzaja we wezle
					$('#node'+i+'actions tr').each(function(index){
						var actionMax=getHighestActionId(i);
						if(actionMax==-1){
							actionMax=1;
						}
						
						
						
						
						
						
						
						var probsum=0;
						for(var j=1;j<=actionMax;j++){
							
										
							//sprawdzanie prawdopodobienstwa czy jest floatem i czy jest w zakresie <0,1>	
							if($('#node'+i+'type').val()==2){
								if($('#node'+i+'probability'+j).size()!=""){
									if(String($('#node'+i+'probability'+j).val()).match(/^-?[0-9]*\.?[0-9]+$/)==null) {
										alert('Węzeł '+i+': błąd!\nNiepoprawny format liczby.\nNależy użyć kropki jako separatora.');
										error=true;
										return false;
									}
									if(parseFloat($('#node'+i+'probability'+j).val()) < 0 || parseFloat($('#node'+i+'probability'+j).val()) > 1){
										alert('Węzeł '+i+': błąd!\nZakres prawdopodobieństwa wynosi <0,1>.\nPopraw dane.');
										error=true;
										return false;
									}

									$('#node'+i+'probability'+j).val(parseFloat($('#node'+i+'probability'+j).val()));
									probsum+=parseFloat($('#node'+i+'probability'+j).val());
								}
									
							}	
							
							//etykiety nie moga zawierac znaku % i nie moga byc puste
							if($('#node'+i+'action'+j).text()!=""){
								if(String($('#node'+i+'label'+j).val()).match(/%/)){
									alert('Węzeł '+i+': błąd!\nAkcja zawiera niedozwolony znak %.\nPopraw dane.'); 
									error=true;
									return false;
								}
								if(String($('#node'+i+'label'+j).val())=="" || String($('#node'+i+'label'+j).val()).match(/^ *$/)){
									alert('Węzeł '+i+': błąd!\nAkcja zawiera pustą etykietę.\nPopraw dane.'); 
									error=true;
									return false;
								}
							}
							
							for(var k=1;k<=actionMax;k++){
								if(j!=k){
									if($('#node'+i+'action'+j).text()!=""){
								
										if($('#node'+i+'value'+j).val()==$('#node'+i+'value'+k).val()){
											error=true;
											alert('Węzeł '+i+': błąd!\nIstnieją duplikaty akcji.\nUsuń akcję lub wybierz inny węzeł docelowy.');
											return false;
										}
									}
								}
							}
							
							//sprawdzanie czy akcja sie nie powtarza z innymi wezlami (czy do jednego wezla prowadzi jedna sciezka)
							for(var x=1;x<=getHighestId();x++){
								if(x!=i){
									$('#node'+x+'actions tr').each(function(index){
										var actionMax1=getHighestActionId(x);
										if(actionMax1==-1){
											actionMax1=0;
										}
										
										for(var k=1;k<=actionMax1;k++){									
											
											if($('#node'+i+'action'+j).text()!=""){	
												if($('#node'+i+'value'+j).val()==$('#node'+x+'value'+k).val()){
													error=true;
													alert('Błąd!\nIstnieją duplikaty akcji w różnych węzłach.\nUsuń akcję lub wybierz inny węzeł docelowy.');
													return false;
												}
												//sprawdzanie petli akcji np. 1-3 3-1
												if($('#node'+i+'value'+j).val()==$('#node'+x+'td1').text() && $('#node'+x+'value'+k).val()==$('#node'+i+'td1').text()){
													error=true;
													alert('Węzeł '+i+' i '+x+': błąd!\nIstnieje pętla pomiędzy węzłami.\nUsuń akcję lub wybierz inny węzeł docelowy.');
													return false;
												}
											}
										}
									});
								if(error){return false;}
								}
							}
						}
						/*							
						if($('#node'+i+'type').val()==2){
							if(probsum!=1){
								error=true;
								alert('Węzeł '+i+': błąd!\nSuma prawdopodobieństw akcji powinna wynosić 1.\nPopraw dane.');
								return false;
							}
						}
                                                */
					});
					if(error){return false;}
					
					//sprawdzanie czy punkty nie sa puste 
					if($('#node'+i+'type').val() == 3){					
						if($('#node'+i+'points1').val()=="" || $('#node'+i+'points2').val()==""){
							alert('Węzeł '+i+': błąd!\nNiewypełnione pola dotyczące punktów.\nWpisz liczbę punktów.');
							return false;
						} 
										
						//i czy sa prawidlową liczbą
						if(String($('#node'+i+'points1').val()).match(/^-?[0-9]*\.?[0-9]+$/)==null || String($('#node'+i+'points2').val()).match(/^-?[0-9]*\.?[0-9]+$/)==null){
							alert('Węzeł '+i+': błąd!\nNiepoprawny format liczby.\nNależy użyć kropki jako separatora');
							return false;
						}
						
						//poprawienie liczb np -.2 na -0.2 i 00000000000.1 na 0.1
						$('#node'+i+'points1').val(parseFloat($('#node'+i+'points1').val()));
						$('#node'+i+'points2').val(parseFloat($('#node'+i+'points2').val()));
					}
					
					//sprawdzenie gry wieloosobowej
					var count1=0;
					var count2=0;
					var count3=0;
					for(var w=1;w<=getHighestId();w++){
						if($('#node'+w+'type').val() == 0){count1++;}
						if($('#node'+w+'type').val() == 1){count2++;}
						if($('#node'+w+'type').val() == 3){count3++;}
					}
					if(count1==0 || count2 ==0){
						alert('Błąd!\nNie istnieje węzeł gracza przeciwnego.\nDodaj węzeł przeciwnika.');
						return false;
					}
					if(count3==0){
						alert('Błąd!\nNie istnieje węzeł Punkty.\nDodaj odpowiedni węzeł.');
						return false;
					}
					
					
					
					//sprawdzanie czy wszystkie wezly maja 1 akcje wskazujaca na nie (oprocz wierzcholka)
					if(i!=nodes[0] && $('#node'+i).text()!=""){
						var count=0;	
						for(var x=1;x<=getHighestId();x++){
							if(x!=i){
								if($('#node'+x+'actions tr').size()>0){
									var actionMax1=getHighestActionId(x);

									if(actionMax1==-1){
										actionMax1=1;
									}
									for(var k=1;k<=actionMax1;k++){
										if($('#node'+i+'td1').text()==$('#node'+x+'value'+k).val()){
											count++;
										}
										if($('#node'+x+'value'+k).val()==nodes[0]){
											alert('Węzeł '+x+': błąd!\nNie może istnieć akcja do wierzchołka.\nPopraw dane.');
											return false;
										}
									}
								}	
							}
						}
						if(count !=1){
							alert('Węzeł '+i+': błąd!\nNie istnieje akcja do tego węzła.\nPopraw dane.');
							return false;
						}
					}
				}

				treeOK=true;
				generateTree();
				return true;
			}

			
			function generateTree(){
				$('#tree_preview').hide();
				
				var img='';
				switch($('#node'+nodes[0]+'type').val()){
				case "0": img='<img class="option_img" src="/images/iPlayer1.png">';
				break;
				case "1": img='<img class="option_img" src="/images/iPlayer2.png">';
				break;
				case "2": img='<img class="option_img" src="/images/iNature.png">';
				break;
				}
				
				$('#tree_preview').html('<table id="tree_node'+nodes[0]+'" class="tree_preview_table"><tr id="tree_node'+nodes[0]+'label"><td class="tree_preview_name" colspan="'+$('#node'+nodes[0]+'actions tr').size()+'">'+img+($('#node'+nodes[0]+'type option:selected').text()=="Natura"?'N':$('#node'+nodes[0]+'type option:selected').text()+' &raquo;'+$('#node'+nodes[0]+'group').val()+'&laquo;')+'</td></tr><tr id="tree_node'+nodes[0]+'actions"></tr></table>');				
				
				for(var i=0;i<=getHighestActionId(nodes[0]);i++){
					if($('#node'+nodes[0]+'value'+i).size()){
						if($('#node'+nodes[0]+'type').val()=="2"){
							$('#tree_node'+nodes[0]+'actions').append('<td class="tree_preview_td" id="tree_node'+nodes[0]+'action'+$('#node'+nodes[0]+'value'+i).val()+'">|<br><img class="option_img" src="/images/iAction.png">'+$('#node'+nodes[0]+'label'+i).val()+'('+$('#node'+nodes[0]+'probability'+i).val()+')<br>|</td>');
						}else{
							$('#tree_node'+nodes[0]+'actions').append('<td class="tree_preview_td" id="tree_node'+nodes[0]+'action'+$('#node'+nodes[0]+'value'+i).val()+'">|<br><img class="option_img" src="/images/iAction.png">'+$('#node'+nodes[0]+'label'+i).val()+'<br>|</td>');
						}
												
					}
				}
				for(var i=nodes[1];i<=nodes.length;i++){
					generateChildren(i);
				}
				$('#tree_preview').show();
			}
			
			function generateChildren(idx){
				
				var img='';
				switch($('#node'+idx+'type').val()){
				case "0": img='<img class="option_img" src="/images/iPlayer1.png">';
				break;
				case "1": img='<img class="option_img" src="/images/iPlayer2.png">';
				break;
				case "2": img='<img class="option_img" src="/images/iNature.png">';
				break;
				}
				
				for(var i=1;i<=getHighestId();i++){
					if($('#tree_node'+i+'action'+idx).text()!=""){
						$('#tree_node'+i+'action'+idx).append('<table class="tree_preview_'+($('#node'+idx+'type').val()=="3"?'points':'table')+'" id="tree_node'+idx+'">'+($('#node'+idx+'type').val()=="3"?'':'<tr id="tree_node'+idx+'label"><td class="tree_preview_name"'+' colspan="'+($('#node'+idx+'type').val()=="3"?2:$('#node'+idx+'actions tr').size())+'">'+img+($('#node'+idx+'type option:selected').text()=="Natura"?'N':$('#node'+idx+'type option:selected').text()+' &raquo;'+$('#node'+idx+'group').val()+'&laquo;</td></tr>'))+'<tr id="tree_node'+idx+'actions"></tr></table>');	
					}
				}
				
				if($('#node'+idx+'type').val()=="3"){
					$('#tree_node'+idx+'actions').append('<td class="tree_preview_td" id="tree_node'+idx+'points1"><img class="option_img" src="/images/iPlayer1.png">'+$('#node'+idx+'points1').val()+'</td><td class="tree_preview_td" id="tree_node'+idx+'points2"><img class="option_img" src="/images/iPlayer2.png">'+$('#node'+idx+'points2').val()+'</td>');
				}
				
				for(var i=0;i<=getHighestActionId(idx);i++){
					if($('#node'+idx+'value'+i).size()){
						if($('#node'+idx+'type').val()=="2"){
							$('#tree_node'+idx+'actions').append('<td class="tree_preview_td" id="tree_node'+idx+'action'+$('#node'+idx+'value'+i).val()+'">|<br><img class="option_img" src="/images/iAction.png">'+$('#node'+idx+'label'+i).val()+'('+$('#node'+idx+'probability'+i).val()+')<br>|</td>');
						} else {
							$('#tree_node'+idx+'actions').append('<td class="tree_preview_td" id="tree_node'+idx+'action'+$('#node'+idx+'value'+i).val()+'">|<br><img class="option_img" src="/images/iAction.png">'+$('#node'+idx+'label'+i).val()+'<br>|</td>');
						}
					}
				}
			}
			
		  $('.tree_stage_2').hide();
		  $('.tree_stage_3').show();	
	  
		  return false;
		});
		
		$('#form_stage_3').live('submit',function() {		
		  if(!treeOK){alert("Należy wygenerować podgląd przed przejściem do następnego kroku.");return false;}		  
		  $('.tree_stage_3').hide();
		  $('.stage_4').show();	
	  
		  return false;
		});
		
		$('#form_stage_4').live('submit',function() {		
		  $('.stage_4').hide();
		  
		  if($('#mat').is(':checked'))
		  {
			MartrixExc();
		  }else{
			TreeExc();
		  }
		  
		  $('.stage_5').show();		  
		  return false;
		});
		
		
		
		
	}
	